package com.probiz.estore.customer.service;

import java.util.List;

import com.probiz.estore.common.model.customer.Customer;
import com.probiz.estore.common.model.customer.Wishlist;
import com.probiz.estore.core.service.GenericManager;


/**
 * Wishlist Business Delegate (Proxy) Interface to handle communication between web and
 * persistence layer.
 * Developer introduced interfaces should be declared here. Won't get overwritten.
 *
 */
public interface WishlistManager extends GenericManager<Wishlist> {
    /**
     * get a customer wishlist List.
     * @param customerId
     * @return
     */
    public List<Wishlist> getAllByCustomerId(Integer customerId);
    
    /**
     * add wishlist item form default wishlist.
     * @param productInfo
     */
    public void addWishListItem(String productCode);
    
    /**
     * add default wishlist for customer
     * @param customer
     */
    public void addDefaultWishlist(Customer customer);
    
    /**
     * add wishlist item to a wishlist ,if newWishlistName is set,
     * the first create new wishlist ,and add this item to it.
     * @param wishlistId
     * @param customerId
     * @param newWishlistName
     * @param productInfo
     */
    public String addSaveWishListItem(String wishlistId,String newWishlistName,String productCode);
    
    /**
     * get customer default wishlist
     * @param customerId
     * @return
     */
    public Wishlist getCustomerDefaultWishlist(Integer customerId);
    /**
     * set a wishlist to default wishlist for customer.
     * @param wishlistId
     * @param customerId
     */
    public void updateDefaultWishlist(Integer wishlistId,Integer customerId);
    
    /**
     * delete a wishlist and it's wish list item
     * @param wishlistId
     */
    public void deleteWishlist(Integer wishlistId);
    
}
